package com.pj.project4sp.sp_mqqt_log;

import cn.hutool.core.util.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.pj.utils.sg.*;

/**
 * 工具类：sp_mqqt_log -- 设备log表
 * @author lh 
 *
 */
@Component
public class SpMqqtLogUtil {

	
	/** 底层 Mapper 对象 */
	public static SpMqqtLogMapper spMqqtLogMapper;
	@Autowired
	private void setSpMqqtLogMapper(SpMqqtLogMapper spMqqtLogMapper) {
		SpMqqtLogUtil.spMqqtLogMapper = spMqqtLogMapper;
	}
	
	
	/** 
	 * 将一个 SpMqqtLog 对象进行进行数据完整性校验 (方便add/update等接口数据校验) [G] 
	 */
	static void check(SpMqqtLog s) {
		AjaxError.throwByIsNull(s.id, "[id] 不能为空");		// 验证: id 
		AjaxError.throwByIsNull(s.clientId, "[用户] 不能为空");		// 验证: 用户 
		AjaxError.throwByIsNull(s.mqttMessage, "[详细内容] 不能为空");		// 验证: 详细内容 
		AjaxError.throwByIsNull(s.channel, "[渠道] 不能为空");		// 验证: 渠道 
		AjaxError.throwByIsNull(s.msg, "[内容] 不能为空");		// 验证: 内容 
		AjaxError.throwByIsNull(s.createTime, "[创建时间] 不能为空");		// 验证: 创建时间 
		AjaxError.throwByIsNull(s.updateTime, "[修改时间] 不能为空");		// 验证: 修改时间 
	}

	/**
	 * 根据雪花算法，返回唯一id
	 * (此地方将workerId写死为1，如果你在分布式场景中应用此方法，你需要对workerId生成策略进行改造)
	 * @return
	 */
	public static String getSnowflakeId() {
		return IdUtil.getSnowflake(1, 1).nextIdStr();
	}
	
}
